<!DOCTYPE html>
<html lang="en-US">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>affine_trans_polygon_xld [HALCON算子参考手册]</title>
<style type="text/css">
      body {
    color: #000000;
    background-color: #ffffff;
    margin: 0;
    font-family: Arial, Helvetica, sans-serif;
}

.body_main {
    margin-left: 35px;
    margin-right: 35px;
}

@media screen and (min-width:992px) {

    .body_main {
        margin-left: 10%;
        margin-right: 10%;
    }

    table.toctable {
        width: 80%
    }
}

@media screen and (min-width:1400px) {

    .body_main {
        margin-left: 15%;
        margin-right: 15%;
    }

    table.toctable {
        width: 70%
    }
}

body>div ul ul {
    margin-left: inherit;
}

a:link {
    color: #0044cc;
}

a:link,
a:visited {
    text-decoration: none;
}

a:link:hover,
a:visited:hover {
    text-decoration: underline;
}

th {
    text-align: left;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizeLegibility;
    color: #666666;
}

code {
    font-family: monospace,monospace;
}

h1 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

h2 a.halconoperator {
    font-family: Arial, Helvetica, sans-serif;
    color: #666666;
}

hr {
    border: 0;
    border-top: solid 1px #f28d26;
}

.pre {
    display: block;
    padding-bottom: 1ex;
    font-family: monospace;
    white-space: pre;
}

pre {
    font-family: monospace, monospace;
    padding: 1ex;
    white-space: pre-wrap;
}

.toc {
    font-size: 80%;
    border-top: 1px dashed #f28d26;
    border-bottom: 1px dashed #f28d26;
    padding-top: 5px;
    padding-bottom: 5px;
}

.inv {
    margin: 0;
    border: 0;
    padding: 0;
}

.banner {
    color: #666666;
    padding-left: 1em;
}

.logo {
    background-color: white;
}

.keyboard {
    font-size: 80%;
    padding-left: 3px;
    padding-right: 3px;
    border-radius: 5px;
    border-width: 1px;
    border-style: solid;
    border-color: #f28d26;
    background-color: #f3f3f3;
}

.warning {
    margin-top: 2ex;
    margin-bottom: 1ex;
    padding: 10px;
    text-align: center;
    border: 1px solid;
    color: #bb0000;
    background-color: #fff7f7
}

.imprint {
    margin-top: 1ex;
    font-size: 80%;
    color: #666666;
}

.imprinthead {
    font-weight: bolder;
    color: #666666;
}

.indexlink {
    text-align: right;
    padding-bottom: 5px;
}

.postscript {
    margin-top: 2ex;
    font-size: 80%;
    color: #666666
}

.evenrow {
    background-color: #e7e7ef;
    vertical-align: top;
}

.oddrow {
    background-color: #f7f7ff;
    vertical-align: top;
}

.headrow {
    background-color: #97979f;
    color: #ffffff;
    vertical-align: top;
}

.logorow {
    vertical-align: top;
}

.error {
    color: red;
}

.var {
    font-style: italic
}

.halconoperator {
    font-family: monospace, monospace;
}

span.operator {
    font-family: monospace, monospace;
}

span.procedure {
    font-family: monospace, monospace;
}

span.operation {
    font-family: monospace, monospace;
}

span.feature {
    font-family: Arial, Helvetica, Homerton, sans-serif;
}

ul {
    padding-left: 1.2em;
}

li.dot {
    list-style-type: square;
    color: #f28d26;
}

.breadcrumb {
    font-size: 80%;
    color: white;
    background-color: #062d64;
    margin-bottom: 20px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 15px;
}

.webbar {
    font-size: 80%;
    background-color: #dddddd;
    margin-top: 0px;
    margin-left: -35px;
    margin-right: -35px;
    margin-bottom: 0px;
    padding-top: 5px;
    padding-left: 35px;
    padding-right: 35px;
    padding-bottom: 5px;
}

.footer {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    border-top: 1px dashed #f28d26;
    font-size: 80%;
    color: #666666;
    padding-bottom: 8px;
}

.footer .socialmedia a {
    padding-left: 7px;
}

.socialmedia {
    padding-top: 10px;
}

.copyright {
    margin-top: 19px;
}

.breadcrumb a {
    color: #ffffff;
    border-bottom: 1px solid white;
}

.breadcrumb a:link:hover,
.breadcrumb a:visited:hover {
    text-decoration: none;
    border-bottom: none;
}

.heading {
    margin-top: 1ex;
    font-size: 110%;
    font-weight: bold;
    color: #666666;
}

.text {
    color: black;
}

.example {
    font-size: 80%;
    background-color: #f3f3f3;
    border: 1px dashed #666666;
    padding: 10px;
}

.displaymath {
    display: block;
    text-align: center;
    margin-top: 1ex;
    margin-bottom: 1ex;
}

.title {
    float: left;
    padding-top: 3px;
    padding-bottom: 3px;
}

.signnote {
    font-family: Arial, Helvetica, Homerton, sans-serif;
    font-size: 80%;
    color: #666666;
    font-weight: lighter;
    font-style: italic
}

.par {
    margin-bottom: 1.5em;
}

.parhead {
    text-align: right;
}

.parname {
    float: left;
}

.pardesc {
    font-size: 85%;
    margin-top: 0.5em;
    margin-bottom: 0.5em;
    margin-left: 2em;
}

.parcat {
    color: #666;
    font-weight: bold;
}

*[data-if=cpp],
*[data-if=c],
*[data-if=dotnet],
*[data-if=com],
*[data-if=python] {
    display: none;
}

.tabbar {
    text-align: right;
    border-bottom: 1px solid #f28d26;
    margin-bottom: 0.5em;
}

ul.tabs {
    padding-top: 3px;
    padding-bottom: 3px;
    margin-top: 10px;
    margin-bottom: 0;
    font-size: 80%
}

ul.tabs li {
    padding-top: 3px;
    padding-bottom: 3px;
    display: inline;
    overflow: hidden;
    list-style-type: none;
    margin: 0;
    margin-left: 8px;
    border-top: 1px solid #666;
    border-left: 1px solid #666;
    border-right: 1px solid #666;
}

ul.tabs li.active {
    border-left: 1px solid #f28d26;
    border-right: 1px solid #f28d26;
    border-top: 1px solid #f28d26;
    border-bottom: 1px solid #fff;
}

ul.tabs li.inactive {
    background-color: #eee;
}

ul.tabs li a {
    padding-left: 5px;
    padding-right: 5px;
    color: #666;
}

ul.tabs li a:link:hover {
    text-decoration: none;
}

ul.tabs li.inactive a {
    color: #666;
}

ul.tabs li.active a {
    color: black;
}

dl.generic dd {
    margin-bottom: 1em;
}

.pari {
    color: olive;
}

.paro {
    color: maroon;
}

.comment {
    font-size: 80%;
    color: green;
    white-space: nowrap;
}

table.grid {
    border-collapse: collapse;
}

table.grid td {
    padding: 5px;
    border: 1px solid;
}

table.layout {
    border: 0px;
}

table.layout td {
    padding: 5px;
}

table.table {
    border-collapse: collapse;
}

table.table td {
    padding: 5px;
    border-left: 0px;
    border-right: 0px;
}

table.table tr:last-child {
    border-bottom: 1px solid;
}

table.table th {
    padding: 5px;
    border-top: 1px solid;
    border-bottom: 1px solid;
    border-left: 0px;
    border-right: 0px;
}

.details_summary {
    cursor: pointer;
}

table.toctable {
    width: 100%;
}

table.toctable col:first-child {
    width: 20%;
}

table.toctable col:nth-last-child(2) {
    width: 8%;
}

table.altcolored tr:nth-child(even) {
    background-color: #f3f3f3;
}

    </style>
<!--OP_REF_STYLE_END-->
<script>
    <!--
var active_lang='hdevelop';function switchVisibility(obj,active_lang,new_lang)
{var display_style='inline';
for(var i=0;i<obj.length;i++)
{if(obj.item(i).getAttribute('data-if')==new_lang)
{obj.item(i).style.display=display_style;}
if(obj.item(i).getAttribute('data-if')==active_lang)
{obj.item(i).style.display='none';}}
return;}
function toggleLanguage(new_lang,initial)
{if(active_lang!=new_lang)
{var lis=document.getElementsByTagName('li');for(var i=0;i<lis.length;i++)
{if(lis.item(i).id=='syn-'+new_lang)
{lis.item(i).className='active';}
else
{lis.item(i).className='inactive';}}
var divs=document.getElementsByTagName('div');var spans=document.getElementsByTagName('span');switchVisibility(divs,active_lang,new_lang);switchVisibility(spans,active_lang,new_lang);if(!initial)
{setCookie("halcon_reference_language",new_lang,null,null);}
active_lang=new_lang;}
return;}
function setCookie(name,value,domain,exp_offset,path,secure)
{localStorage.setItem(name,value);}
function getCookie(name)
{return localStorage.getItem(name);}
function initialize()
{var qs=location.href.split('?')[1];var qs_lang_raw=location.href.split('interface=')[1];var qs_lang;if(qs_lang_raw)
{qs_lang=qs_lang_raw.split('#')[0];}
var cookie_lang=getCookie("halcon_reference_language");var new_lang;if((qs_lang=="hdevelop")||(qs_lang=="dotnet")||(qs_lang=="python")||(qs_lang=="cpp")||(qs_lang=="c"))
{new_lang=qs_lang;setCookie("halcon_reference_language",new_lang,null,null);}
else if((cookie_lang=="hdevelop")||(cookie_lang=="dotnet")||(cookie_lang=="python")||(cookie_lang=="cpp")||(cookie_lang=="c"))
{new_lang=cookie_lang;}
else
{new_lang="hdevelop";}
toggleLanguage(new_lang,1);return;}
-->

  </script>
</head>
<body onload="initialize();">
<div class="breadcrumb">
<br class="inv"><a href="index.html">目录</a> / <a href="toc_xld.html">XLD</a> / <a href="toc_xld_geometrictransformations.html">Geometric Transformations</a><br class="inv">
</div>
<div class="body_main">
<div class="tabbar"><ul class="tabs">
<li id="syn-hdevelop" class="active"><a href="javascript:void(0);" onclick="toggleLanguage('hdevelop')" onfocus="blur()">HDevelop</a></li>
<li id="syn-dotnet" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('dotnet')" onfocus="blur()">.NET</a></li>
<li id="syn-python" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('python')" onfocus="blur()">Python</a></li>
<li id="syn-cpp" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('cpp')" onfocus="blur()">C++</a></li>
<li id="syn-c" class="inactive"><a href="javascript:void(0);" onclick="toggleLanguage('c')" onfocus="blur()">C</a></li>
</ul></div>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<!--OP_REF_HEADER_END-->
<h1 id="sec_name">
<span data-if="hdevelop" style="display:inline;">affine_trans_polygon_xld</span><span data-if="c" style="display:none;">T_affine_trans_polygon_xld</span><span data-if="cpp" style="display:none;">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none;">AffineTransPolygonXld</span><span data-if="python" style="display:none;">affine_trans_polygon_xld</span> (算子名称)</h1>
<h2>名称</h2>
<p><code><span data-if="hdevelop" style="display:inline;">affine_trans_polygon_xld</span><span data-if="c" style="display:none;">T_affine_trans_polygon_xld</span><span data-if="cpp" style="display:none;">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none;">AffineTransPolygonXld</span><span data-if="python" style="display:none;">affine_trans_polygon_xld</span></code> — Apply an arbitrary affine transformation to XLD polygons.</p>
<h2 id="sec_synopsis">参数签名</h2>
<div data-if="hdevelop" style="display:inline;">
<p>
<code><b>affine_trans_polygon_xld</b>(<a href="#Polygons"><i>Polygons</i></a> : <a href="#PolygonsAffineTrans"><i>PolygonsAffineTrans</i></a> : <a href="#HomMat2D"><i>HomMat2D</i></a> : )</code></p>
</div>
<div data-if="c" style="display:none;">
<p>
<code>Herror <b>T_affine_trans_polygon_xld</b>(const Hobject <a href="#Polygons"><i>Polygons</i></a>, Hobject* <a href="#PolygonsAffineTrans"><i>PolygonsAffineTrans</i></a>, const Htuple <a href="#HomMat2D"><i>HomMat2D</i></a>)</code></p>
</div>
<div data-if="cpp" style="display:none;">
<p>
<code>void <b>AffineTransPolygonXld</b>(const HObject&amp; <a href="#Polygons"><i>Polygons</i></a>, HObject* <a href="#PolygonsAffineTrans"><i>PolygonsAffineTrans</i></a>, const HTuple&amp; <a href="#HomMat2D"><i>HomMat2D</i></a>)</code></p>
<p>
<code><a href="HXLDPoly.html">HXLDPoly</a> <a href="HXLDPoly.html">HXLDPoly</a>::<b>AffineTransPolygonXld</b>(const HHomMat2D&amp; <a href="#HomMat2D"><i>HomMat2D</i></a>) const</code></p>
<p>
<code><a href="HXLDPoly.html">HXLDPoly</a> <a href="HHomMat2D.html">HHomMat2D</a>::<b>AffineTransPolygonXld</b>(const HXLDPoly&amp; <a href="#Polygons"><i>Polygons</i></a>) const</code></p>
</div>
<div data-if="com" style="display:none;"></div>
<div data-if="dotnet" style="display:none;">
<p>
<code>static void <a href="HOperatorSet.html">HOperatorSet</a>.<b>AffineTransPolygonXld</b>(<a href="HObject.html">HObject</a> <a href="#Polygons"><i>polygons</i></a>, out <a href="HObject.html">HObject</a> <a href="#PolygonsAffineTrans"><i>polygonsAffineTrans</i></a>, <a href="HTuple.html">HTuple</a> <a href="#HomMat2D"><i>homMat2D</i></a>)</code></p>
<p>
<code><a href="HXLDPoly.html">HXLDPoly</a> <a href="HXLDPoly.html">HXLDPoly</a>.<b>AffineTransPolygonXld</b>(<a href="HHomMat2D.html">HHomMat2D</a> <a href="#HomMat2D"><i>homMat2D</i></a>)</code></p>
<p>
<code><a href="HXLDPoly.html">HXLDPoly</a> <a href="HHomMat2D.html">HHomMat2D</a>.<b>AffineTransPolygonXld</b>(<a href="HXLDPoly.html">HXLDPoly</a> <a href="#Polygons"><i>polygons</i></a>)</code></p>
</div>
<div data-if="python" style="display:none;">
<p>
<code>def <b>affine_trans_polygon_xld</b>(<a href="#Polygons"><i>polygons</i></a>: HObject, <a href="#HomMat2D"><i>hom_mat_2d</i></a>: Sequence[float]) -&gt; HObject</code></p>
</div>
<h2 id="sec_description">描述</h2>
<p><code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld</span><span data-if="c" style="display:none">affine_trans_polygon_xld</span><span data-if="cpp" style="display:none">AffineTransPolygonXld</span><span data-if="com" style="display:none">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld</span><span data-if="python" style="display:none">affine_trans_polygon_xld</span></code> applies an arbitrary affine transformation,
i.e., scaling, rotation, translation, and slant (skewing), to the XLD
polygons given in <a href="#Polygons"><i><code><span data-if="hdevelop" style="display:inline">Polygons</span><span data-if="c" style="display:none">Polygons</span><span data-if="cpp" style="display:none">Polygons</span><span data-if="com" style="display:none">Polygons</span><span data-if="dotnet" style="display:none">polygons</span><span data-if="python" style="display:none">polygons</span></code></i></a> and returns the transformed polygons in
<a href="#PolygonsAffineTrans"><i><code><span data-if="hdevelop" style="display:inline">PolygonsAffineTrans</span><span data-if="c" style="display:none">PolygonsAffineTrans</span><span data-if="cpp" style="display:none">PolygonsAffineTrans</span><span data-if="com" style="display:none">PolygonsAffineTrans</span><span data-if="dotnet" style="display:none">polygonsAffineTrans</span><span data-if="python" style="display:none">polygons_affine_trans</span></code></i></a>.  The affine transformation is described by the
homogeneous transformation matrix given in <a href="#HomMat2D"><i><code><span data-if="hdevelop" style="display:inline">HomMat2D</span><span data-if="c" style="display:none">HomMat2D</span><span data-if="cpp" style="display:none">HomMat2D</span><span data-if="com" style="display:none">HomMat2D</span><span data-if="dotnet" style="display:none">homMat2D</span><span data-if="python" style="display:none">hom_mat_2d</span></code></i></a>. This matrix can
be created using 该算子s <a href="hom_mat2d_identity.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_identity</span><span data-if="c" style="display:none">hom_mat2d_identity</span><span data-if="cpp" style="display:none">HomMat2dIdentity</span><span data-if="com" style="display:none">HomMat2dIdentity</span><span data-if="dotnet" style="display:none">HomMat2dIdentity</span><span data-if="python" style="display:none">hom_mat2d_identity</span></code></a>,
<a href="hom_mat2d_scale.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_scale</span><span data-if="c" style="display:none">hom_mat2d_scale</span><span data-if="cpp" style="display:none">HomMat2dScale</span><span data-if="com" style="display:none">HomMat2dScale</span><span data-if="dotnet" style="display:none">HomMat2dScale</span><span data-if="python" style="display:none">hom_mat2d_scale</span></code></a>, <a href="hom_mat2d_rotate.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_rotate</span><span data-if="c" style="display:none">hom_mat2d_rotate</span><span data-if="cpp" style="display:none">HomMat2dRotate</span><span data-if="com" style="display:none">HomMat2dRotate</span><span data-if="dotnet" style="display:none">HomMat2dRotate</span><span data-if="python" style="display:none">hom_mat2d_rotate</span></code></a>,
<a href="hom_mat2d_translate.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_translate</span><span data-if="c" style="display:none">hom_mat2d_translate</span><span data-if="cpp" style="display:none">HomMat2dTranslate</span><span data-if="com" style="display:none">HomMat2dTranslate</span><span data-if="dotnet" style="display:none">HomMat2dTranslate</span><span data-if="python" style="display:none">hom_mat2d_translate</span></code></a>, etc., or be the result of operators like
<a href="vector_angle_to_rigid.html"><code><span data-if="hdevelop" style="display:inline">vector_angle_to_rigid</span><span data-if="c" style="display:none">vector_angle_to_rigid</span><span data-if="cpp" style="display:none">VectorAngleToRigid</span><span data-if="com" style="display:none">VectorAngleToRigid</span><span data-if="dotnet" style="display:none">VectorAngleToRigid</span><span data-if="python" style="display:none">vector_angle_to_rigid</span></code></a>.
</p>
<p>The components of the homogeneous transformation matrix are interpreted as
follows: The <em>row</em> coordinate of the image corresponds to x and
the <em>column</em> coordinate corresponds to y of the coordinate system in
which the transformation matrix was defined. This is necessary to obtain
a right-handed coordinate system for the image.  In particular, this assures
that rotations are performed in the correct direction.  Note that the
(x,y) order of the matrices quite naturally corresponds to the usual
(row,column) order for coordinates in the image.</p>
<h2 id="sec_attention">注意</h2>
<p>The XLD contours that are possibly referenced by <a href="#Polygons"><i><code><span data-if="hdevelop" style="display:inline">Polygons</span><span data-if="c" style="display:none">Polygons</span><span data-if="cpp" style="display:none">Polygons</span><span data-if="com" style="display:none">Polygons</span><span data-if="dotnet" style="display:none">polygons</span><span data-if="python" style="display:none">polygons</span></code></i></a>
are neither transformed nor stored with the output polygons, since
this is generally impossible without creating inconsistencies for
the attributes of the XLD contours.  Hence, operators that access
the contours associated with a polygon, e.g.,
<a href="split_contours_xld.html"><code><span data-if="hdevelop" style="display:inline">split_contours_xld</span><span data-if="c" style="display:none">split_contours_xld</span><span data-if="cpp" style="display:none">SplitContoursXld</span><span data-if="com" style="display:none">SplitContoursXld</span><span data-if="dotnet" style="display:none">SplitContoursXld</span><span data-if="python" style="display:none">split_contours_xld</span></code></a> will not work correctly.
</p>
<p><code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld</span><span data-if="c" style="display:none">affine_trans_polygon_xld</span><span data-if="cpp" style="display:none">AffineTransPolygonXld</span><span data-if="com" style="display:none">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld</span><span data-if="python" style="display:none">affine_trans_polygon_xld</span></code> does not use the HALCON standard
coordinate system (with the origin in the center of the upper left
pixel), but instead uses the same coordinate system as in
<a href="affine_trans_pixel.html"><code><span data-if="hdevelop" style="display:inline">affine_trans_pixel</span><span data-if="c" style="display:none">affine_trans_pixel</span><span data-if="cpp" style="display:none">AffineTransPixel</span><span data-if="com" style="display:none">AffineTransPixel</span><span data-if="dotnet" style="display:none">AffineTransPixel</span><span data-if="python" style="display:none">affine_trans_pixel</span></code></a>, i.e., the origin lies in the upper
left corner of the upper left pixel. Therefore,
applying <code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld</span><span data-if="c" style="display:none">affine_trans_polygon_xld</span><span data-if="cpp" style="display:none">AffineTransPolygonXld</span><span data-if="com" style="display:none">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld</span><span data-if="python" style="display:none">affine_trans_polygon_xld</span></code> corresponds to
a chain of transformations (see <a href="affine_trans_pixel.html"><code><span data-if="hdevelop" style="display:inline">affine_trans_pixel</span><span data-if="c" style="display:none">affine_trans_pixel</span><span data-if="cpp" style="display:none">AffineTransPixel</span><span data-if="com" style="display:none">AffineTransPixel</span><span data-if="dotnet" style="display:none">AffineTransPixel</span><span data-if="python" style="display:none">affine_trans_pixel</span></code></a>), which is
applied to each point of the polygon (input and output pixels as homogeneous
vectors).
As an effect, you might get unexpected results when creating affine
transformations based on coordinates that are derived from the
polygon, e.g., by operators like
<a href="area_center_xld.html"><code><span data-if="hdevelop" style="display:inline">area_center_xld</span><span data-if="c" style="display:none">area_center_xld</span><span data-if="cpp" style="display:none">AreaCenterXld</span><span data-if="com" style="display:none">AreaCenterXld</span><span data-if="dotnet" style="display:none">AreaCenterXld</span><span data-if="python" style="display:none">area_center_xld</span></code></a>. For example, if you use this operator to calculate
the center of gravity of a rotationally symmetric XLD polygon and then
rotate the polygon around this point using <a href="hom_mat2d_rotate.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_rotate</span><span data-if="c" style="display:none">hom_mat2d_rotate</span><span data-if="cpp" style="display:none">HomMat2dRotate</span><span data-if="com" style="display:none">HomMat2dRotate</span><span data-if="dotnet" style="display:none">HomMat2dRotate</span><span data-if="python" style="display:none">hom_mat2d_rotate</span></code></a>, the
resulting polygon will not lie on the original one. In such a case, you can
compensate this effect by applying the following translations to
<a href="#HomMat2D"><i><code><span data-if="hdevelop" style="display:inline">HomMat2D</span><span data-if="c" style="display:none">HomMat2D</span><span data-if="cpp" style="display:none">HomMat2D</span><span data-if="com" style="display:none">HomMat2D</span><span data-if="dotnet" style="display:none">homMat2D</span><span data-if="python" style="display:none">hom_mat_2d</span></code></i></a> before using it in <code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld</span><span data-if="c" style="display:none">affine_trans_polygon_xld</span><span data-if="cpp" style="display:none">AffineTransPolygonXld</span><span data-if="com" style="display:none">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld</span><span data-if="python" style="display:none">affine_trans_polygon_xld</span></code>:
</p>
<div style="text-align:center"><table style="width:90%;margin-left:auto;margin-right:auto" class="layout">
<col span="1" style="width:90%;">
<tr><td style="text-align:left">
<a href="hom_mat2d_translate.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span><span data-if="c" style="display:none">hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span><span data-if="cpp" style="display:none">HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span><span data-if="com" style="display:none">HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span><span data-if="dotnet" style="display:none">HomMat2dTranslate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span><span data-if="python" style="display:none">hom_mat2d_translate(HomMat2D, 0.5, 0.5, HomMat2DTmp)</span></code></a>
</td></tr>
<tr><td style="text-align:left">
<a href="hom_mat2d_translate_local.html"><code><span data-if="hdevelop" style="display:inline">hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span><span data-if="c" style="display:none">hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span><span data-if="cpp" style="display:none">HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span><span data-if="com" style="display:none">HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span><span data-if="dotnet" style="display:none">HomMat2dTranslateLocal(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span><span data-if="python" style="display:none">hom_mat2d_translate_local(HomMat2DTmp, -0.5, -0.5, HomMat2DAdapted)</span></code></a>
</td></tr>
<tr><td style="text-align:left">
<code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span><span data-if="c" style="display:none">affine_trans_polygon_xld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span><span data-if="cpp" style="display:none">AffineTransPolygonXld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span><span data-if="com" style="display:none">AffineTransPolygonXld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span><span data-if="python" style="display:none">affine_trans_polygon_xld(Polygons, PolygonsAffineTrans, HomMat2DAdapted)</span></code>
</td></tr>
</table></div>

<p>For an explanation of the different 2D coordinate systems
used in HALCON, see the introduction of chapter
<a href="toc_transformations_2dtransformations.html">Transformations / 2D Transformations</a>.
</p>

<h2 id="sec_execution">运行信息</h2>
<ul>
  <li>多线程类型:可重入(与非独占操作符并行运行)。</li>
<li>多线程作用域:全局(可以从任何线程调用)。</li>
  
    <li>在元组级别自动并行化。</li>
  
</ul>
<h2 id="sec_parameters">参数表</h2>
  <div class="par">
<div class="parhead">
<span id="Polygons" class="parname"><b><code><span data-if="hdevelop" style="display:inline">Polygons</span><span data-if="c" style="display:none">Polygons</span><span data-if="cpp" style="display:none">Polygons</span><span data-if="com" style="display:none">Polygons</span><span data-if="dotnet" style="display:none">polygons</span><span data-if="python" style="display:none">polygons</span></code></b> (input_object)  </span><span>xld_poly(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HXLDPoly.html">HXLDPoly</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HXLDPoly.html">HXLDPoly</a></span><span data-if="c" style="display:none">Hobject</span></span>
</div>
<p class="pardesc">Input XLD polygons.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="PolygonsAffineTrans" class="parname"><b><code><span data-if="hdevelop" style="display:inline">PolygonsAffineTrans</span><span data-if="c" style="display:none">PolygonsAffineTrans</span><span data-if="cpp" style="display:none">PolygonsAffineTrans</span><span data-if="com" style="display:none">PolygonsAffineTrans</span><span data-if="dotnet" style="display:none">polygonsAffineTrans</span><span data-if="python" style="display:none">polygons_affine_trans</span></code></b> (output_object)  </span><span>xld_poly(-array) <code>→</code> <span data-if="hdevelop" style="display:inline">object</span><span data-if="dotnet" style="display:none"><a href="HXLDPoly.html">HXLDPoly</a></span><span data-if="python" style="display:none">HObject</span><span data-if="cpp" style="display:none"><a href="HXLDPoly.html">HXLDPoly</a></span><span data-if="c" style="display:none">Hobject *</span></span>
</div>
<p class="pardesc">Transformed XLD polygons.</p>
</div>
  <div class="par">
<div class="parhead">
<span id="HomMat2D" class="parname"><b><code><span data-if="hdevelop" style="display:inline">HomMat2D</span><span data-if="c" style="display:none">HomMat2D</span><span data-if="cpp" style="display:none">HomMat2D</span><span data-if="com" style="display:none">HomMat2D</span><span data-if="dotnet" style="display:none">homMat2D</span><span data-if="python" style="display:none">hom_mat_2d</span></code></b> (input_control)  </span><span>hom_mat2d <code>→</code> <span data-if="dotnet" style="display:none"><a href="HHomMat2D.html">HHomMat2D</a>, </span><span data-if="dotnet" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="python" style="display:none">Sequence[float]</span><span data-if="cpp" style="display:none"><a href="HTuple.html">HTuple</a></span><span data-if="c" style="display:none">Htuple</span><span data-if="hdevelop" style="display:inline"> (real)</span><span data-if="dotnet" style="display:none"> (<i>double</i>)</span><span data-if="cpp" style="display:none"> (<i>double</i>)</span><span data-if="c" style="display:none"> (<i>double</i>)</span></span>
</div>
<p class="pardesc">Input transformation matrix.</p>
</div>
<h2 id="sec_result">结果</h2>
<p>If the matrix <a href="#HomMat2D"><i><code><span data-if="hdevelop" style="display:inline">HomMat2D</span><span data-if="c" style="display:none">HomMat2D</span><span data-if="cpp" style="display:none">HomMat2D</span><span data-if="com" style="display:none">HomMat2D</span><span data-if="dotnet" style="display:none">homMat2D</span><span data-if="python" style="display:none">hom_mat_2d</span></code></i></a> represents an affine transformation
(i.e., not a projective transformation),
<code><span data-if="hdevelop" style="display:inline">affine_trans_polygon_xld</span><span data-if="c" style="display:none">affine_trans_polygon_xld</span><span data-if="cpp" style="display:none">AffineTransPolygonXld</span><span data-if="com" style="display:none">AffineTransPolygonXld</span><span data-if="dotnet" style="display:none">AffineTransPolygonXld</span><span data-if="python" style="display:none">affine_trans_polygon_xld</span></code> returns <TT>2</TT> (
      <TT>H_MSG_TRUE</TT>)
    .  If the input is
empty the behavior can be set via
<a href="set_system.html"><code><span data-if="hdevelop" style="display:inline">set_system(::'no_object_result',&lt;Result&gt;:)</span><span data-if="c" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span><span data-if="cpp" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="com" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="dotnet" style="display:none">SetSystem("no_object_result",&lt;Result&gt;)</span><span data-if="python" style="display:none">set_system("no_object_result",&lt;Result&gt;)</span></code></a>.  If necessary,
an exception is raised.</p>
<h2 id="sec_predecessors">可能的前置算子</h2>
<p>
<code><a href="hom_mat2d_identity.html"><span data-if="hdevelop" style="display:inline">hom_mat2d_identity</span><span data-if="c" style="display:none">hom_mat2d_identity</span><span data-if="cpp" style="display:none">HomMat2dIdentity</span><span data-if="com" style="display:none">HomMat2dIdentity</span><span data-if="dotnet" style="display:none">HomMat2dIdentity</span><span data-if="python" style="display:none">hom_mat2d_identity</span></a></code>, 
<code><a href="hom_mat2d_translate.html"><span data-if="hdevelop" style="display:inline">hom_mat2d_translate</span><span data-if="c" style="display:none">hom_mat2d_translate</span><span data-if="cpp" style="display:none">HomMat2dTranslate</span><span data-if="com" style="display:none">HomMat2dTranslate</span><span data-if="dotnet" style="display:none">HomMat2dTranslate</span><span data-if="python" style="display:none">hom_mat2d_translate</span></a></code>, 
<code><a href="hom_mat2d_rotate.html"><span data-if="hdevelop" style="display:inline">hom_mat2d_rotate</span><span data-if="c" style="display:none">hom_mat2d_rotate</span><span data-if="cpp" style="display:none">HomMat2dRotate</span><span data-if="com" style="display:none">HomMat2dRotate</span><span data-if="dotnet" style="display:none">HomMat2dRotate</span><span data-if="python" style="display:none">hom_mat2d_rotate</span></a></code>, 
<code><a href="hom_mat2d_scale.html"><span data-if="hdevelop" style="display:inline">hom_mat2d_scale</span><span data-if="c" style="display:none">hom_mat2d_scale</span><span data-if="cpp" style="display:none">HomMat2dScale</span><span data-if="com" style="display:none">HomMat2dScale</span><span data-if="dotnet" style="display:none">HomMat2dScale</span><span data-if="python" style="display:none">hom_mat2d_scale</span></a></code>, 
<code><a href="hom_mat2d_reflect.html"><span data-if="hdevelop" style="display:inline">hom_mat2d_reflect</span><span data-if="c" style="display:none">hom_mat2d_reflect</span><span data-if="cpp" style="display:none">HomMat2dReflect</span><span data-if="com" style="display:none">HomMat2dReflect</span><span data-if="dotnet" style="display:none">HomMat2dReflect</span><span data-if="python" style="display:none">hom_mat2d_reflect</span></a></code>
</p>
<h2 id="sec_see">参考其它</h2>
<p>
<code><a href="affine_trans_image.html"><span data-if="hdevelop" style="display:inline">affine_trans_image</span><span data-if="c" style="display:none">affine_trans_image</span><span data-if="cpp" style="display:none">AffineTransImage</span><span data-if="com" style="display:none">AffineTransImage</span><span data-if="dotnet" style="display:none">AffineTransImage</span><span data-if="python" style="display:none">affine_trans_image</span></a></code>, 
<code><a href="affine_trans_region.html"><span data-if="hdevelop" style="display:inline">affine_trans_region</span><span data-if="c" style="display:none">affine_trans_region</span><span data-if="cpp" style="display:none">AffineTransRegion</span><span data-if="com" style="display:none">AffineTransRegion</span><span data-if="dotnet" style="display:none">AffineTransRegion</span><span data-if="python" style="display:none">affine_trans_region</span></a></code>, 
<code><a href="affine_trans_contour_xld.html"><span data-if="hdevelop" style="display:inline">affine_trans_contour_xld</span><span data-if="c" style="display:none">affine_trans_contour_xld</span><span data-if="cpp" style="display:none">AffineTransContourXld</span><span data-if="com" style="display:none">AffineTransContourXld</span><span data-if="dotnet" style="display:none">AffineTransContourXld</span><span data-if="python" style="display:none">affine_trans_contour_xld</span></a></code>
</p>
<h2 id="sec_module">模块</h2>
<p>
Foundation</p>
<!--OP_REF_FOOTER_START-->
<hr>
<div class="indexlink">
<a href="index_classes.html"><span data-if="dotnet" style="display:none;">类别</span><span data-if="cpp" style="display:none;">类别</span></a><span data-if="dotnet" style="display:none;"> | </span><span data-if="cpp" style="display:none;"> | </span><a href="index_by_name.html">算子列表</a>
</div>
<div class="footer">
<div class="copyright">HALCON算子参考手册 Copyright © 2015-2023 51Halcon</div>
</div>
</div>
</body>
</html>
